package dungeon;

import be.kuleuven.cs.som.annotate.Basic;
/**
 * This class represents dungeon object that are present in a dungeon.
 * Such a dungeon object can be a square or an obstacle between to squares.
 * 
 * @author Frederik
 *
 */
public abstract class DungeonObject {
	
	/**
	 * Initialize a new dungeon object given whether it's slippery or not.
	 * 
	 * @param inherentlySlippery	Whether the dungeon object is inherently slippery or not.
	 */
	protected DungeonObject(Boolean inherentlySlippery){
		setInherentlySlippery(inherentlySlippery);
	}
	
	/**
	 * Return whether this dungeon object is inherently slippery or not.
	 */
	@Basic
	public boolean isInherentlySlippery() {
		return inherentlySlippery;
	}

	/**
	 * Set whether this dungeon object is inherently slippery or not.
	 * 
	 * @param 	inherentlySlippery
	 *         	Whether the dungeon object is to be inherently slippery or not.
	 * @post 	The inherently slippery of this square is equal to the given
	 *       	inherently slippery. 
	 *       	| new.isInherentlySlippery() == inherentlySlippery
	 */
	protected void setInherentlySlippery(boolean inherentlySlippery) {
		this.inherentlySlippery = inherentlySlippery;
	}

	/**
	 * Variable for registering the inherently slipperiness of this dungeon object.
	 */
	private boolean inherentlySlippery;
}
